package com.ztorn.fiscale.mapper;

import java.util.List;
import org.apache.ibatis.annotations.Param;
import com.ztorn.fiscale.domain.FiscaleOrder;
import com.ztorn.fiscale.domain.FiscaleOrderItem;

/**
 * 订单管理Mapper接口
 * 
 * @author ztorn
 * @date 2025-01-18
 */
public interface FiscaleOrderMapper 
{
    /**
     * 查询订单管理
     * 
     * @param orderId 订单管理主键
     * @return 订单管理
     */
    public FiscaleOrder selectFiscaleOrderByOrderId(Long orderId);

    /**
     * 查询订单管理列表
     * 
     * @param fiscaleOrder 订单管理
     * @return 订单管理集合
     */
    public List<FiscaleOrder> selectFiscaleOrderList(FiscaleOrder fiscaleOrder);

    /**
     * 新增订单管理
     * 
     * @param fiscaleOrder 订单管理
     * @return 结果
     */
    public int insertFiscaleOrder(FiscaleOrder fiscaleOrder);

    /**
     * 修改订单管理
     * 
     * @param fiscaleOrder 订单管理
     * @return 结果
     */
    public int updateFiscaleOrder(FiscaleOrder fiscaleOrder);

    /**
     * 删除订单管理
     * 
     * @param orderId 订单管理主键
     * @return 结果
     */
    public int deleteFiscaleOrderByOrderId(Long orderId);

    /**
     * 批量删除订单管理
     * 
     * @param orderIds 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteFiscaleOrderByOrderIds(Long[] orderIds);

    /**
     * 批量删除订单商品明细
     * 
     * @param orderIds 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteFiscaleOrderItemByOrderIds(Long[] orderIds);
    
    /**
     * 批量新增订单商品明细
     * 
     * @param fiscaleOrderItemList 订单商品明细列表
     * @return 结果
     */
    public int batchFiscaleOrderItem(List<FiscaleOrderItem> fiscaleOrderItemList);
    

    /**
     * 通过订单管理主键删除订单商品明细信息
     * 
     * @param orderId 订单管理ID
     * @return 结果
     */
    public int deleteFiscaleOrderItemByOrderId(Long orderId);

    /**
     * 根据订单号查询订单
     * 
     * @param orderNo 订单号
     * @return 订单信息
     */
    public FiscaleOrder selectFiscaleOrderByOrderNo(String orderNo);

    /**
     * 根据平台订单号查询订单
     * 
     * @param platformOrderNo 平台订单号
     * @return 订单信息
     */
    public FiscaleOrder selectFiscaleOrderByPlatformOrderNo(String platformOrderNo);

    /**
     * 批量更新订单状态
     * 
     * @param orderIds 订单ID数组
     * @param orderStatus 订单状态
     * @param updateBy 更新者
     * @return 结果
     */
    public int batchUpdateOrderStatus(@Param("orderIds") Long[] orderIds, @Param("orderStatus") String orderStatus, @Param("updateBy") String updateBy);

    /**
     * 批量更新报关状态
     * 
     * @param orderIds 订单ID数组
     * @param customsStatus 报关状态
     * @param updateBy 更新者
     * @return 结果
     */
    public int batchUpdateCustomsStatus(@Param("orderIds") Long[] orderIds, @Param("customsStatus") String customsStatus, @Param("updateBy") String updateBy);

    /**
     * 统计订单数量按状态
     * 
     * @return 统计结果
     */
    public List<FiscaleOrder> selectOrderCountByStatus();

    /**
     * 统计订单数量按平台
     * 
     * @return 统计结果
     */
    public List<FiscaleOrder> selectOrderCountByPlatform();
}